using System;
using System.ComponentModel.DataAnnotations;

namespace BTKERP.Model
{
	#region Shelf
	/// <summary>
	/// This object represents the properties and methods of a Shelf.
	/// </summary>
	[Serializable]
	public class Shelf
	{
		protected Guid _id;
		protected string _code = String.Empty;
		protected string _barcode = String.Empty;
		protected string _name = String.Empty;
		protected string _description = String.Empty;
        private Guid _warehouseId = Guid.Empty;
		protected int _levels;
		protected decimal _capacity;
		protected decimal _weight;
		protected decimal _length;
		protected decimal _width;
		protected decimal _height;
		protected decimal _thickness;
		protected DateTime _createdOn;
		protected string _createdBy = String.Empty;
		protected DateTime _updatedOn;
		protected string _updatedBy = String.Empty;
		protected bool _isDeleted;
		
		public Shelf()
		{
		}
		
		#region Public Properties
		public Guid Id
		{
			get {return _id;}
			set { _id = value;}
		}
		
        [Required]
        [StringLength(50)]
		public string Code
		{
			get {return _code;}
			set {_code = value;}
		}

		public string Barcode
		{
			get {return _barcode;}
			set {_barcode = value;}
		}

        [Required]
        [StringLength(50)]
		public string Name
		{
			get {return _name;}
			set {_name = value;}
		}

		public string Description
		{
			get {return _description;}
			set {_description = value;}
		}

        [Required]
        public Guid WarehouseId
        {
            get { return _warehouseId; }
            set { _warehouseId = value; }
        }
		

		public int Levels
		{
			get {return _levels;}
			set {_levels = value;}
		}

		public decimal Capacity
		{
			get {return _capacity;}
			set {_capacity = value;}
		}

		public decimal Weight
		{
			get {return _weight;}
			set {_weight = value;}
		}

		public decimal Length
		{
			get {return _length;}
			set {_length = value;}
		}

		public decimal Width
		{
			get {return _width;}
			set {_width = value;}
		}

		public decimal Height
		{
			get {return _height;}
			set {_height = value;}
		}

		public decimal Thickness
		{
			get {return _thickness;}
			set {_thickness = value;}
		}

		public DateTime CreatedOn
		{
			get {return _createdOn;}
			set {_createdOn = value;}
		}

		public string CreatedBy
		{
			get {return _createdBy;}
			set {_createdBy = value;}
		}

		public DateTime UpdatedOn
		{
			get {return _updatedOn;}
			set {_updatedOn = value;}
		}

		public string UpdatedBy
		{
			get {return _updatedBy;}
			set {_updatedBy = value;}
		}

		public bool IsDeleted
		{
			get {return _isDeleted;}
			set {_isDeleted = value;}
		}
		#endregion
		
	}
	#endregion
}
